S3 Tables の Iceberg テーブルを Amazon Redshift でクエリ実行する #AWSreInvent
AWS事業本部コンサルティング部の石川です。本日は、S3 Tables の Iceberg テーブルに Amazon Redshift からクエリを実行してみます。クエリを実行するIcebergテーブルは、以前のブログで作成したものを用います。
Amazon Redshift からクエリを実行する手順
S3 Tables の Iceberg テーブルは、Amazon Redshift から直接クエリを実行できません。RedshiftでS3テーブルとGlueデータカタログを完全に統合するには、S3 Tables の Namespaceから、Lake Formation の Resource link を作成して、データカタログ、バケット名、データベース名(名前空間)を指定します。そして、Resource link と Resource link 内のテーブルに対して権限付与が必要になります。
- Lake Formation の Resource link を作成
- Database(Resource link)の権限付与
- Database(Resource link)内のテーブル
- Redshift Query Editor V2からクエリを実行
Lake Formation の Resource link を作成
Lake Formation コンソールからDatabase(Resource link)を作成します。
Resource Linkを選択して、Resource Link nameを指定します。後は、デフォルトやプルダウンから設定できます。
Databaseの一覧に作成したResource Linkが表示されます。
Database(Resource link)の権限付与
作成したDatabase(Resource link)に対して権限を付与します。
ここでは、Database(Resource link)に対して、Describeのみを付与します。
Database(Resource link)内のテーブル
次にDatabase(Resource link)内のテーブルに対して権限付与します。
ここでは、Database(Resource link)内のすべてのテーブルに対してテーブル権限のすべてを付与します。
Redshift Query Editor V2からクエリを実行
re:Invent 2024の直前にデータベースのツリー表示もアップデートしています。external databasesの下に先ほど作成したDatabase(Resource link)とその中のテーブルが表示されます。lineorderテーブルの中を表示しています。
Amazon Athena による Resource link 内のテーブルの参照
また、Amazon Athena からは、普通のデータベースと同様に先ほど作成したDatabase(Resource link)が表示され、クエリを実行することができました。
最後に
S3 Tables の Iceberg テーブルに Amazon Redshift からクエリを実行する過程では、Lake Formation の Resource link の作成、適切な権限の付与、そして Redshift Query Editor V2 からのクエリ実行という重要なステップを踏むことが必要です。
Resource linkは、S3 Tables の Iceberg テーブルを Redshift から直接クエリできるようになるだけでなく、Amazon Athena からも同様にアクセスが可能でした。今回はすべてのテーブルに対して権限付与しましたが、Lake Formation によるテーブルやカラムを指定したきめ細かな権限管理も可能です。